package org.budo.cmbc.direct.sdk;

import org.budo.cmbc.direct.sdk.entity.MEAccountAssetsQueryRequest;
import org.budo.cmbc.direct.sdk.entity.MEAccountAssetsQueryResponse;
import org.budo.cmbc.direct.sdk.entity.MEAccountOpenQueryRequest;
import org.budo.cmbc.direct.sdk.entity.MEAccountOpenQueryResponse;
import org.budo.cmbc.direct.sdk.entity.MEAccountOpenRequest;
import org.budo.cmbc.direct.sdk.entity.MEAccountOpenResponse;
import org.budo.cmbc.direct.sdk.entity.MEAccountQueryRequest;
import org.budo.cmbc.direct.sdk.entity.MEAccountQueryResponse;
import org.budo.cmbc.direct.sdk.entity.MEAccountUnLockRequest;
import org.budo.cmbc.direct.sdk.entity.MEAccountUnLockResponse;
import org.budo.cmbc.direct.sdk.entity.MEActiveIIIPayeeAcctRequest;
import org.budo.cmbc.direct.sdk.entity.MEActiveIIIPayeeAcctResponse;
import org.budo.cmbc.direct.sdk.entity.MEAddrListQryRequest;
import org.budo.cmbc.direct.sdk.entity.MEAddrListQryResponse;
import org.budo.cmbc.direct.sdk.entity.MEBankInnerPathQueryRequest;
import org.budo.cmbc.direct.sdk.entity.MEBankInnerPathQueryResponse;
import org.budo.cmbc.direct.sdk.entity.MEBankInnerPathSignRequest;
import org.budo.cmbc.direct.sdk.entity.MEBankInnerPathSignResponse;
import org.budo.cmbc.direct.sdk.entity.MECloseAccountRequest;
import org.budo.cmbc.direct.sdk.entity.MECloseAccountResponse;
import org.budo.cmbc.direct.sdk.entity.MECloseAccountResultQueryRequest;
import org.budo.cmbc.direct.sdk.entity.MECloseAccountResultQueryResponse;
import org.budo.cmbc.direct.sdk.entity.MECustInfoCheckRequest;
import org.budo.cmbc.direct.sdk.entity.MECustInfoCheckResponse;
import org.budo.cmbc.direct.sdk.entity.MECustInfoMaintenRequest;
import org.budo.cmbc.direct.sdk.entity.MECustInfoMaintenResponse;
import org.budo.cmbc.direct.sdk.entity.MEEAcnoTrsJnlQueryRequest;
import org.budo.cmbc.direct.sdk.entity.MEEAcnoTrsJnlQueryResponse;
import org.budo.cmbc.direct.sdk.entity.MEIIIAccountOpenRequest;
import org.budo.cmbc.direct.sdk.entity.MEIIIAccountOpenResponse;
import org.budo.cmbc.direct.sdk.entity.MELEBankRouterOutTransferRequest;
import org.budo.cmbc.direct.sdk.entity.MELEBankRouterOutTransferResponse;
import org.budo.cmbc.direct.sdk.entity.MELEBankRouterQueryRequest;
import org.budo.cmbc.direct.sdk.entity.MELEBankRouterQueryResponse;
import org.budo.cmbc.direct.sdk.entity.MELECardBinQueryRequest;
import org.budo.cmbc.direct.sdk.entity.MELECardBinQueryResponse;
import org.budo.cmbc.direct.sdk.entity.MELEGenerateRandRequest;
import org.budo.cmbc.direct.sdk.entity.MELEGenerateRandResponse;
import org.budo.cmbc.direct.sdk.entity.MELEGetPhoneCodeRequest;
import org.budo.cmbc.direct.sdk.entity.MELEGetPhoneCodeResponse;
import org.budo.cmbc.direct.sdk.entity.MELEIdPhotoUploadRequest;
import org.budo.cmbc.direct.sdk.entity.MELEIdPhotoUploadResponse;
import org.budo.cmbc.direct.sdk.entity.MELEIdPhotoUploadResultRequest;
import org.budo.cmbc.direct.sdk.entity.MELEIdPhotoUploadResultResponse;
import org.budo.cmbc.direct.sdk.entity.MEOccupationListQryRequest;
import org.budo.cmbc.direct.sdk.entity.MEOccupationListQryResponse;
import org.budo.cmbc.direct.sdk.entity.MEPreCloseAccountRequest;
import org.budo.cmbc.direct.sdk.entity.MEPreCloseAccountResponse;
import org.budo.cmbc.direct.sdk.entity.MEQryTransStatusRequest;
import org.budo.cmbc.direct.sdk.entity.MEQryTransStatusResponse;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEApprovalProcessListQueryRequest;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEApprovalProcessListQueryResponse;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEApprovalProcessQueryRequest;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEApprovalProcessQueryResponse;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEBindCardChangeApprovalApplyRequest;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEBindCardChangeApprovalApplyResponse;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEBindCardChangeByApprovalRequest;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEBindCardChangeByApprovalResponse;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEBindCardChangeRequest;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEBindCardChangeResponse;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEPhoneChangeForOldPhoneMsgRequest;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEPhoneChangeForOldPhoneMsgResponse;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEPhoneChangeWithoutOldPhoneMsgRequest;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.MEPhoneChangeWithoutOldPhoneMsgResponse;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.METransPasswordChangeRequest;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.METransPasswordChangeResponse;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.METransPasswordResetApplyRequest;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.METransPasswordResetApplyResponse;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.METransPasswordResetRequest;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.METransPasswordResetResponse;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.METransPasswordUnlockRequest;
import org.budo.cmbc.direct.sdk.entity.changeaccountinfo.METransPasswordUnlockResponse;

/**
 * 直销银行 相关接口
 * 
 * @author lmw
 */
public interface CmbcDirectBankSdk {
    String getMerchantNo();

    /**
     * 激活收款三类户
     */
    MEActiveIIIPayeeAcctResponse MEActiveIIIPayeeAcct(MEActiveIIIPayeeAcctRequest request);

    /**
     * 客户身份证上传结果查询
     */
    MELEIdPhotoUploadResultResponse MELEIdPhotoUploadResult(MELEIdPhotoUploadResultRequest request);

    /**
     * 获取随机数
     */
    MELEGenerateRandResponse MELEGenerateRand(MELEGenerateRandRequest randRequest);

    /**
     * 获取短信验证码
     */
    MELEGetPhoneCodeResponse MELEGetPhoneCode(MELEGetPhoneCodeRequest request);

    /**
     * 开户
     */
    MEAccountOpenResponse MEAccountOpen(MEAccountOpenRequest request);

    /**
     * 联机身份证照片上传
     */
    MELEIdPhotoUploadResponse MELEIdPhotoUpload(MELEIdPhotoUploadRequest request);

    /**
     * 电子账户开户结果查询
     */
    MEAccountOpenQueryResponse MEAccountOpenQuery(MEAccountOpenQueryRequest request);

    /**
     * 客户信息检查
     */
    MECustInfoCheckResponse MECustInfoCheck(MECustInfoCheckRequest request);

    /**
     * 客户信息完善
     */
    MECustInfoMaintenResponse MECustInfoMainten(MECustInfoMaintenRequest request);

    /**
     * 借记卡信息查询
     */
    MELECardBinQueryResponse MELECardBinQuery(MELECardBinQueryRequest request);

    /**
     * 职业列表查询
     */
    MEOccupationListQryResponse MEOccupationListQry(MEOccupationListQryRequest request);

    /**
     * 地址列表查询
     */
    MEAddrListQryResponse MEAddrListQry(MEAddrListQryRequest request);

    /**
     * 电子账户信息查询
     */
    MEAccountQueryResponse MEAccountQuery(MEAccountQueryRequest request);

    /**
     * 电子账户解锁
     */
    MEAccountUnLockResponse MEAccountUnLock(MEAccountUnLockRequest request);

    /**
     * 电子账户预销户
     */
    MEPreCloseAccountResponse MEPreCloseAccount(MEPreCloseAccountRequest request);

    /**
     * 电子账户销户
     */
    MECloseAccountResponse MECloseAccount(MECloseAccountRequest request);

    /**
     * 销户结果查询
     */
    MECloseAccountResultQueryResponse MECloseAccountResultQuery(MECloseAccountResultQueryRequest request);

    /**
     * 三类账户开户
     */
    MEIIIAccountOpenResponse MEIIIAccountOpen(MEIIIAccountOpenRequest request);

    /**
     * 电子账户资产查询接口(电子账户余额)
     */
    MEAccountAssetsQueryResponse MEAccountAssetsQuery(MEAccountAssetsQueryRequest request);

    /**
     * 出金到绑定卡
     */
    MELEBankRouterOutTransferResponse MELEBankRouterOutTransfer(MELEBankRouterOutTransferRequest request);

    /**
     * 查询出金汇路接口
     */
    MELEBankRouterQueryResponse MELEBankRouterQuery(MELEBankRouterQueryRequest request);

    /**
     * 查询交易记录
     */
    MEEAcnoTrsJnlQueryResponse MEEAcnoTrsJnlQuery(MEEAcnoTrsJnlQueryRequest request);

    /**
     * 不确定交易查询接口
     */
    MEQryTransStatusResponse MEQryTransStatus(MEQryTransStatusRequest request);

    // 信息变更接口

    /**
     * 更换手机号(原手机可接收到短信)
     */
    MEPhoneChangeForOldPhoneMsgResponse MEPhoneChangeForOldPhoneMsg(MEPhoneChangeForOldPhoneMsgRequest request);

    /**
     * 手机号变更(原手机号不能收到短信)
     */
    MEPhoneChangeWithoutOldPhoneMsgResponse MEPhoneChangeWithoutOldPhoneMsg(MEPhoneChangeWithoutOldPhoneMsgRequest request);

    /**
     * 变更绑定卡
     */
    MEBindCardChangeResponse MEBindCardChange(MEBindCardChangeRequest request);

    /**
     * 交易密码结果
     */
    METransPasswordUnlockResponse METransPasswordUnlock(METransPasswordUnlockRequest request);

    /**
     * 交易密码变更
     */
    METransPasswordChangeResponse METransPasswordChange(METransPasswordChangeRequest request);

    /**
     * 交易密码重置申请
     */
    METransPasswordResetApplyResponse METransPasswordResetRequest(METransPasswordResetApplyRequest request);

    /**
     * 交易密码重置
     */
    METransPasswordResetResponse METransPasswordReset(METransPasswordResetRequest request);

    /**
     * 审批进度查询
     */
    MEApprovalProcessQueryResponse MEApprovalProcessQuery(MEApprovalProcessQueryRequest request);

    /**
     * 审批进度列表查询
     */
    MEApprovalProcessListQueryResponse MEApprovalProcessListQuery(MEApprovalProcessListQueryRequest request);

    /**
     * 非零资产变更银行卡申请
     */
    MEBindCardChangeApprovalApplyResponse MEBindCardChangeApprovalApply(MEBindCardChangeApprovalApplyRequest request);

    /**
     * 非零资产变更绑定卡
     */
    MEBindCardChangeByApprovalResponse MEBindCardChangeByApproval(MEBindCardChangeByApprovalRequest request);
    // 入金汇路查询及签约

    /**
     * 入金汇路查询
     */
    MEBankInnerPathQueryResponse MEBankInnerPathQuery(MEBankInnerPathQueryRequest request);

    /**
     * 入金通道签约
     */
    MEBankInnerPathSignResponse MEBankInnerPathSign(MEBankInnerPathSignRequest request);
}